\section{Analyse des besoins}

%% Voici la liste des besoins fonctionnels à apporter à notre lecteur QCM pour son bon fonctionnement. Ils peuvent être répartis en deux:
%% \begin{dinglist}{70}
%% \item les besoins dits "\textit{primaires}" qui doivent \^ etre imp\'erativement impl\'ement\'es pour que notre lecteur QCM fonctionne correctement; 
%% \item les besoins dits "\textit{secondaires}"  qui sont des besoins moins importants ou moins urgents que les pr\'ec\'ecents.
%% \end{dinglist}

Nous fournissons maintenant toutes les informations relatives aux besoins du client. Elles se décomposent en deux parties: les besoins fonctionnels et non fonctionnels.

\subsection{Besoins fonctionnels}

Les besoins que nous allons énumérer représentent les services attendus du logiciel par le client. Le système doit pouvoir disposer des fonctionnalités ci-dessous:
\\
\\
\textbf{Le générateur de \textsf{QCM}} doit fournir les services suivants:

\begin{dinglist}{70}
\item Vérifier si le formulaire de \textit{QCM} vierge scanné est bien sous format \textsf{PDF} et générer une erreur dans le cas contraire.

\item Prendre en compte les formulaires de \textit{QCM} vierges scannés sur plusieurs pages. Une zone spéciale devra permettre de numéroter les pages.

\item Vérifier si le document vierge est bien scanné et dispose des points de repères sur les coins du document, et le rejeter dans le cas contraire. Ces marques permettront de calculer l'angle de déviation que pourrait subir un formulaire de \textit{QCM} lors de la phase de numérisation.  

\item Permettre de définir les motifs du fichier d'entrée: c'est-à-dire les identifiants uniques représentés par un code à barres ou une suite de caractères alphanumériques, une zone de texte, et des cercles ou des cases à cocher. 
\\
L'identifiant peut représenter par exemple un numéro d'anonymat, et les suites de caractères un numéro d'étudiant.

\end{dinglist}

\begin{dinglist}{70}
\item Il doit pouvoir sauvegarder les coordonnées de ces zones délimitées dans un fichier représentant le modèle de \textit{QCM}.
\end{dinglist}
\textbf{L'analyseur de QCM} doit répondre aux fonctionnalités ci-dessous:
\begin{dinglist}{70}
\item Vérifier si le formulaire du \textit{QCM} rempli est bien sous format \textsf{PDF}, et le rejeter dans le cas contraire en générant une erreur.

\item Prendre en compte les formulaires de \textit{QCM} remplis scannés sur plusieurs pages. Une zone spéciale devra permettre de numéroter les pages.

\item Vérifier également si le \textit{QCM} rempli est bien scanné et dispose des points de repères sur les coins du document, et le refuser dans le cas contraire en renvoyant un message d'erreur. 

\item Vérifier si les coordonnées des zones utiles au calcul des résultats du \textit{QCM} rempli correspondent bien à celles enregistrées dans le fichier de type X. 

\item Réajuster les coordonnées de ces zones au cas où la résolution du \textsf{PDF} du \textit{QCM} vierge serait différente de celle du \textsf{PDF} du \textit{QCM} rempli, en s'aidant des marqueurs présents sur les coins de la feuille. Cela pourrait arriver lorsque la numérisation est effectuée par exemple avec deux machines différentes. 

\item Calculer et sauvegarder les résultats des \textit{QCM} remplis dans un fichier sous format CSV.

\end{dinglist}

\subsection{Besoins non fonctionnels}

La liste suivante décrit des contraintes supplémentaires souhaitées par le client. Le système doir rester opérationnel sous celles-ci:

\begin{dinglist}{70}

\item L'outil devra être multi-plateforme.

\item Le générateur de modèle de \textit{QCM} devrait également offrir la possibilité de sauvegarder une tâche à n'importe quel moment.

\end{dinglist}  

 \newpage 
\subsection{Diagramme de cas d'utilisation}

Le diagramme \vref{diagrammeCU} illustre les interactions entre l'utilisateur et le système.


\begin{figure}[H]
\centering
\includegraphics[width=1\textwidth]{../Diagramme/used/CUdiagramme.png}
\caption{Diagramme des cas d'utilisation}
\label{diagrammeCU}
\end{figure}

\newpage
\section{Scénarios des cas d'utilisation principaux}

Les tableaux \vref{description1} et \ref{description2} représentent des fiches des principaux cas d'utilisation décrivant les enchaînements.

\input{used.tex/ficheDescriptive1}
\newpage
\input{used.tex/ficheDescriptive2}
\newpage

\section{Diagrammes d'états-transitions}

Au cours de leur exécution, les logiciels de création de modèles de \textit{QCM} et d'analyseur de \textit{QCM} peuvent notamment passer par les états illustrés par les schémas \vref{diagramme1} et \vref{diagramme2}.   

\begin{figure}[H]
\centering
\includegraphics[width=1\textwidth]{../Diagramme/used/ETdiagramme1.png}
\caption{Création du modèle de QCM}
\label{diagramme1}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=16cm]{../Diagramme/used/ETdiagramme2.png}
\caption{Analyse du QCM}
\label{diagramme2}
\end{figure}
\newpage

\section{Diagramme de séquence}

Le diagramme \vref{diagramme3} décrit l'enchaînement dans le temps des différentes actions effectuées par le créateur des modèles du \textit{QCM} et l'analyseur du \textit{QCM}.

\begin{figure}[H]
\centering
\includegraphics[width=17cm,height=17cm]{../Diagramme/used/diagramme_sequence_general.png}
\caption{Diagramme de séquence}
\label{diagramme3}
\end{figure}
